package lab03.test08;

import java.io.*;

public class Test08 {

    //    8、	将文件一和文件二的内容合并成文件三，合并方法是：
    //    从文件一读取一个字节放入文件三，再从文件二读取一个字节放入文件三，
    //    如此轮流直至某一个文件读完，再将较长文件中的剩余部分读取放入至文件三。

    public static void main(String[] args) {
//        定义文件路径
        File file = new File("D:\\8.txt");
        String path1 = "D:\\8.1.txt";
        String path2 = "D:\\8.2.txt";

//        定义文件一和文件二的输入流
        FileInputStream fileIn1 = null;
        FileInputStream fileIn2 = null;

//        定义文件三的输入流
        FileOutputStream fileOut3 = null;

        try {
            fileIn1 = new FileInputStream(path1);
            fileIn2 = new FileInputStream(path2);

            fileOut3 = new FileOutputStream(file);

//            从文件一读取一个字节放入文件三，再从文件二读取一个字节放入文件三，
//            如此轮流直至某一个文件读完，再将较长文件中的剩余部分读取放入至文件三。
            int data1 = 0;
            int data2 = 0;
            while (true) {
//                从文件一读取一个字节放入文件三，再从文件二读取一个字节放入文件三，
                if (((data1 = fileIn1.read()) != -1) && ((data2 = fileIn2.read()) != -1)) {
                    fileOut3.write(data1);
                    fileOut3.write(data2);
                }
//                再将较长文件中的剩余部分读取放入至文件三。
                else if (((data1 = fileIn1.read()) == -1) && ((data2 = fileIn2.read()) != -1)) {
                    fileOut3.write(data2);
                } else if (((data1 = fileIn1.read()) != -1) && ((data2 = fileIn2.read()) == -1)) {
                    fileOut3.write(fileIn1.read());
                } else
                    break;
            }


//            先读取文件一，再读取文件二：
//            int data1 = 0;
//            while ((data1 = fileIn1.read()) != -1){
//                fileOut3.write(data1);
//            }
//
//            int data2 = 0;
//            while ((data2 = fileIn2.read()) != -1){
//                fileOut3.write(data2);
//            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}
